home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_09_10
/
9n10036a
< prev
next >
Wrap
Text File
|
1991-08-14
|
2KB
|
76 lines
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "c_calls.h"
void insert_cell(LIST *list, const char *name)
/*
Insert a new cell in the list with the specified name and return a
pointer to the head of the list. The new cell is inserted in
alphabetical order.
*/
{
LIST new_cell;
if ((*list == NULL) || (namecmp(name, (*list)->name) < 0))
{
if ((new_cell = malloc(sizeof(CELL))) == NULL)
error("out of memory");
new_cell->calls = new_cell->called_from = NULL;
strcpy(new_cell->name, name);
if (*list == NULL)
new_cell->next = NULL;
else
new_cell->next = *list;
*list = new_cell;
}
else
if (stricmp(name, (*list)->name) != 0)
insert_cell((&(*list)->next), name);
}
void delete_cell(LIST *list, const char *name)
/* Delete the cell with the specified name from the list. */
{
LIST ptr;
/* If cell to be deleted is at head of list... */
if ((*list != NULL) && (stricmp(name, (*list)->name) == 0))
{
/* Delete the cell. */
ptr = *list;
*list = (*list)->next;
free(ptr);
}
else
/* Try to delete the cell from the rest of the list. */
if (*list != NULL)
delete_cell(&(*list)->next, name);
}
LIST find_cell(LIST list, const char *name)
/*
Return a pointer to the cell containing the specified name
if it is found in the list. Otherwise return NULL.
*/
{
for (; list != NULL; list = list->next)
if (stricmp(name, list->name) == 0)
return list;
return NULL;
}